home *** CD-ROM | disk | FTP | other *** search
- sampler s0 : register(s0);
- float4 p0 : register(c0);
- float4 p1 : register(c1);
-
- #define width (p0[0])
- #define height (p0[1])
-
- #define dx (p1[0])
- #define dy (p1[1])
-
- float4 main( float2 tex : TEXCOORD0 ) : COLOR
- {
- float4 ori;
- float4 flou;
- float4 cori;
- float4 final;
-
- ori = tex2D(s0, tex);
- float4 c1 = tex2D(s0, tex + float2(-dx,-dy));
- float4 c2 = tex2D(s0, tex + float2(0,-dy));
- float4 c3 = tex2D(s0, tex + float2(dx,-dy));
- float4 c4 = tex2D(s0, tex + float2(-dx,0));
- float4 c5 = tex2D(s0, tex + float2(dx,0));
- float4 c6 = tex2D(s0, tex + float2(-dx,dy));
- float4 c7 = tex2D(s0, tex + float2(0,dy));
- float4 c8 = tex2D(s0, tex + float2(dx,dy));
-
- flou = (c1+c3+c6+c8 + 2*(c2+c4+c5+c7)+ 4*ori)*0.0625;
-
- cori = 2*ori - flou;
-
- float delta1;
- float delta2;
- float value;
-
- delta1 = (c3 + 2*c5 + c8)-(c1 + 2*c4 + c6);
- delta2 = (c6 + 2*c7 + c8)-(c1 + 2*c2 + c3);
-
- value = sqrt( mul(delta1,delta1) + mul(delta2,delta2) ) ;
-
- if( value >.3 )
- {
- #define Sharpen_val0 2.0
- #define Sharpen_val1 0.125
- final = ori*2 - (c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 ) * 0.125 ;
- return final;
- }
- else
- {
- return cori;
- }
- }